﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using KPIS.GERP.GHRMS.MODEL;

namespace KPIS.GERP.GHRMS.IBLL
{
    public interface ICommandDetailBLL
    {
        IList<CommandDetailInfo> ListCommandDetail();
        IList<CommandDetailInfo> ListCommandDetail(int Commands);
        IList<CommandDetailInfo> ListCommandDetailBySequence(int Sequence);
        IList<CommandDetailInfo> ListCommandDetailByEmployee(int Employee);
        IList<CommandDetailInfo> ListCommandPosition(int Employee);
        IList<CommandDetailInfo> ListCommandSalary(int Employee);
        DataSet LoadCommandDetails(Nullable<int> EmployeeSeq, string CommandGroup);
        DataSet LoadCommandDetails(Nullable<int> Sequence, Nullable<int> CommandSeq, Nullable<int> EmployeeSeq);
        DataSet LoadCommandDetailReports(Nullable<int> CommandSeq);
        //********* คำสั่งเลื่อนเงินเดือน ***********************
        void Insert(int cmd_seq, int emp_seq, Nullable<DateTime> start_date, Nullable<int> new_pos_seq
            , string new_pos_ref, string new_pos_name, Nullable<int> new_class_seq, Nullable<int> new_job_site_seq
            , string new_job_site_name, Nullable<Double> new_salary, Nullable<Double> old_salary
            , Nullable<Double> prm_base, Nullable<Double> prm_percent, Nullable<Double> prm_amount
            , string Remarks, int CreatedBy);        
        void Update(int cmd_dtls_seq, int emp_seq, Nullable<DateTime> start_date, Nullable<int> new_pos_seq
            , string new_pos_ref, string new_pos_name, Nullable<int> new_class_seq, Nullable<int> new_job_site_seq
            , string new_job_site_name, Nullable<Double> new_salary, Nullable<Double> old_salary
            , Nullable<Double> prm_base, Nullable<Double> prm_percent, Nullable<Double> prm_amount
            , string Remarks, int UpdatedBy);
        //**********คำสั่งทัวๆ ไป ****************************
        void Insert(int cmd_seq, Nullable<int> emp_seq, Nullable<DateTime> start_date, Nullable<int> new_pos_seq
            , string new_pos_ref, string new_pos_name, Nullable<int> new_class_seq, Nullable<int> new_job_site_seq
            , string new_job_site_name, Nullable<Double> new_salary, Nullable<Double> old_salary
            , Nullable<int> old_pos_seq, string old_pos_ref, string old_pos_name
            , Nullable<int> old_class_seq, Nullable<int> old_job_site_seq, string old_job_site_name
            , Nullable<int> ent_no, string ent_pos_name, Nullable<int> ent_pos_type_seq, Nullable<int> ent_class_seq
            , string ent_job_site_name, Nullable<DateTime> ent_date, Nullable<int> tmp_emp_seq, Nullable<int> tmp_edu_seq
            , Nullable<int> edu_his_seq, Nullable<int> movment_seq, Nullable<DateTime> curr_pos_class_date, string Remarks, int CreatedBy);
        void Update(int cmd_dtls_seq, Nullable<int> emp_seq, Nullable<DateTime> start_date, Nullable<int> new_pos_seq
            , string new_pos_ref, string new_pos_name, Nullable<int> new_class_seq, Nullable<int> new_job_site_seq
            , string new_job_site_name, Nullable<Double> new_salary, Nullable<Double> old_salary
            , Nullable<int> old_pos_seq, string old_pos_ref, string old_pos_name
            , Nullable<int> old_class_seq, Nullable<int> old_job_site_seq, string old_job_site_name
            , Nullable<int> ent_no, string ent_pos_name, Nullable<int> ent_pos_type_seq, Nullable<int> ent_class_seq
            , string ent_job_site_name, Nullable<DateTime> ent_date, Nullable<int> tmp_emp_seq, Nullable<int> tmp_edu_seq
            , Nullable<int> edu_his_seq, Nullable<int> movment_seq, Nullable<DateTime> curr_pos_class_date, string Remarks, int UpdatedBy);

        void Delete(int Sequence, int UpdatedBy);
        void InsertSalaryChangeAuto(int CmdSequence, int CreatedBy);
    }
}
